root: Move the renderer to the root
authorBenjamin Otte <otte@redhat.com>
Sun, 10 Feb 2019 00:06:39 +0000 (01:06 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 15 Feb 2019 05:53:17 +0000 (06:53 +0100)
gtk/gtkroot.c
gtk/gtkroot.h
gtk/gtkrootprivate.h
gtk/gtkwidget.c
gtk/gtkwindow.c
gtk/gtkwindowprivate.h
gtk/inspector/logs.c
gtk/inspector/window.c

index d94dd2e2730f2ee034eef3827bbd901b72d34151..1907786e956901072e71918982974c99d1a20b36 100644 (file)
@@ -43,6 +43,12 @@ gtk_root_default_get_display (GtkRoot *self)
   return gdk_display_get_default ();
 }
 
+static GskRenderer *
+gtk_root_default_get_renderer (GtkRoot *self)
+{
+  return NULL;
+}
+
 static void
 gtk_root_default_get_surface_transform (GtkRoot *self,
                                         int     *x,
@@ -56,6 +62,7 @@ static void
 gtk_root_default_init (GtkRootInterface *iface)
 {
   iface->get_display = gtk_root_default_get_display;
+  iface->get_renderer = gtk_root_default_get_renderer;
   iface->get_surface_transform = gtk_root_default_get_surface_transform;
 }
 
@@ -70,6 +77,16 @@ gtk_root_get_display (GtkRoot *self)
   return iface->get_display (self);
 }
 
+GskRenderer *
+gtk_root_get_renderer (GtkRoot *self)
+{
+  GtkRootInterface *iface;
+
+  g_return_val_if_fail (GTK_IS_ROOT (self), NULL);
+
+  iface = GTK_ROOT_GET_IFACE (self);
+  return iface->get_renderer (self);
+}
 
 void
 gtk_root_get_surface_transform (GtkRoot *self,
index b0680462a569c8dee8f51e06dceff46bca9397fb..e3494fcc7a3954753353ffb8dd061fc706face0c 100644 (file)
@@ -46,6 +46,7 @@ struct _GtkRootInterface
 
   /*< public >*/
   GdkDisplay *          (* get_display)                 (GtkRoot                *self);
+  GskRenderer *         (* get_renderer)                (GtkRoot                *self);
 
   void                  (* get_surface_transform)       (GtkRoot                *root,
                                                          int                    *x,
index 964e832ba052963cb27a9486c3663a2cd149a706..07ddc380e54ff1f83d6953dc5cf590d33627b722 100644 (file)
@@ -6,6 +6,7 @@
 G_BEGIN_DECLS
 
 GdkDisplay *            gtk_root_get_display            (GtkRoot                *root);
+GskRenderer *           gtk_root_get_renderer           (GtkRoot                *self);
 
 void                    gtk_root_get_surface_transform  (GtkRoot                *self,
                                                          int                    *x,
index 96b932c4a1de4d951f8b3654a9bc27f5b1384364..518a3b8c14b820fc0b4fecbd63ee615f0318309f 100644 (file)
@@ -5085,18 +5085,6 @@ gtk_widget_real_mnemonic_activate (GtkWidget *widget,
   return TRUE;
 }
 
-static GskRenderer *
-gtk_widget_get_renderer (GtkWidget *widget)
-{
-  GtkWidget *toplevel;
-
-  toplevel = _gtk_widget_get_toplevel (widget);
-  if (_gtk_widget_is_toplevel (toplevel))
-    return gtk_window_get_renderer (GTK_WINDOW (toplevel));
-
-  return NULL;
-}
-
 #define WIDGET_REALIZED_FOR_EVENT(widget, event) \
      (event->any.type == GDK_FOCUS_CHANGE || _gtk_widget_get_realized(widget))
 
@@ -13230,11 +13218,14 @@ gtk_widget_render (GtkWidget            *widget,
   GskRenderer *renderer;
   GskRenderNode *root;
 
+  if (!GTK_IS_ROOT (widget))
+    return;
+
   /* We only render double buffered on native windows */
   if (!gdk_surface_has_native (surface))
     return;
 
-  renderer = gtk_widget_get_renderer (widget);
+  renderer = gtk_root_get_renderer (GTK_ROOT (widget));
   if (renderer == NULL)
     return;
 
index ba2b37c3156a041b812f9adf27322e6151d3fe98..ed9c63f9387e1b2f69920f0c433800f27d5c558f 100644 (file)
@@ -2507,6 +2507,15 @@ gtk_window_root_get_display (GtkRoot *root)
   return priv->display;
 }
 
+static GskRenderer *
+gtk_window_root_get_renderer (GtkRoot *root)
+{
+  GtkWindow *self = GTK_WINDOW (root);
+  GtkWindowPrivate *priv = gtk_window_get_instance_private (self);
+
+  return priv->renderer;
+}
+
 static void
 gtk_window_root_get_surface_transform (GtkRoot *root,
                                        int     *x,
@@ -2520,6 +2529,7 @@ static void
 gtk_window_root_interface_init (GtkRootInterface *iface)
 {
   iface->get_display = gtk_window_root_get_display;
+  iface->get_renderer = gtk_window_root_get_renderer;
   iface->get_surface_transform = gtk_window_root_get_surface_transform;
 }
 
@@ -10578,14 +10588,6 @@ gtk_window_unexport_handle (GtkWindow *window)
 #endif
 }
 
-GskRenderer *
-gtk_window_get_renderer (GtkWindow *window)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
-  return priv->renderer;
-}
-
 static void
 gtk_window_add_pointer_focus (GtkWindow       *window,
                               GtkPointerFocus *focus)
index ce91bfa59fa865a81bd80915e0fe98932c76f019..de0c853f77669be553a082af642e579e0ab68c12 100644 (file)
@@ -132,8 +132,6 @@ gboolean      gtk_window_export_handle   (GtkWindow               *window,
                                           gpointer                 user_data);
 void          gtk_window_unexport_handle (GtkWindow               *window);
 
-GskRenderer *gtk_window_get_renderer (GtkWindow *window);
-
 GtkWidget *      gtk_window_lookup_pointer_focus_widget (GtkWindow        *window,
                                                          GdkDevice        *device,
                                                          GdkEventSequence *sequence);
index a8c59ceba63c969e74215958185e90f37cc3edf2..1bc73c76297902f325eb4dae147e14e815ab34a9 100644 (file)
@@ -35,7 +35,7 @@
 #include "gtkprivate.h"
 #include "gtkdebug.h"
 #include "gdkinternals.h"
-#include "gtkwindowprivate.h"
+#include "gtkrootprivate.h"
 #include "gskdebugprivate.h"
 #include "gskrendererprivate.h"
 
@@ -146,7 +146,7 @@ flag_toggled (GtkWidget        *button,
       if (toplevel == gtk_widget_get_toplevel (button)) /* skip the inspector */
         continue;
 
-      renderer = gtk_window_get_renderer (GTK_WINDOW (toplevel));
+      renderer = gtk_root_get_renderer (GTK_ROOT (toplevel));
       if (!renderer)
         continue;
 
index 3239cd577036867b44344116209002ec69e4c665..9bdced31e416d183ea8a85ae6b38ecb4666f6c63 100644 (file)
 #include "gtklabel.h"
 #include "gtkmodulesprivate.h"
 #include "gtkprivate.h"
+#include "gtkrootprivate.h"
 #include "gtkstack.h"
 #include "gtktreeviewcolumn.h"
 #include "gtkwindowgroup.h"
-#include "gtkwindowprivate.h"
 
 G_DEFINE_TYPE (GtkInspectorWindow, gtk_inspector_window, GTK_TYPE_WINDOW)
 
@@ -273,7 +273,7 @@ gtk_inspector_window_realize (GtkWidget *widget)
 
   GTK_WIDGET_CLASS (gtk_inspector_window_parent_class)->realize (widget);
 
-  renderer = gtk_window_get_renderer (GTK_WINDOW (widget));
+  renderer = gtk_root_get_renderer (GTK_ROOT (widget));
   gsk_renderer_set_debug_flags (renderer, 0);
 }